Image recognition is a human capability that is not easily translated into the computing space. A human, for example, can recognize the face of a friend from among a collection of facial photographs. Similarly, a human can recognize photographs of the same object, even when taken from different angles or at different times of day. By contrast, computing devices generally undertake detailed analysis of individual elements of an image in order to perform functions approximating a human's facial recognition or image matching abilities.
Traditionally, image matching, including facial recognition, is performed by a computing device by identifying interest points within an image and then analyzing the identified interest points based on the image information surrounding such points. A “patch” of the image around the interest point can be analyzed through various means, including the use of filters, transformations and hashes. For example, a 64-by-64 pixel square around an interest point could be used, yielding a total of 4,096 values, with each value representing the information contained in one pixel. Subsequently, the 4,096 values could be reduced to a collection of 64 or 128 values through various filters and transformations. The filters and transformations used were traditionally selected based on manually tuned parameters such that the resulting 64 or 128 values emphasized those elements of the original patch that distinguished it from different patches and those elements that it shared with matching patches. In addition, the filters and transformations were also selected so that they deemphasized those elements that made the patch appear similar to non-matching patches or that distinguished the patch from matching patches.
Once the patches had been reduced to a smaller number of values, comparisons could be made among these patch values, with patches having similar values being found to be matching, while patches with dissimilar values being found to be non-matching. The overall image could then be matched to other images based on the quantity and location of matching patches.